Typically, most personal computers are employed as passive tools. Users of the computers are required to directly manipulate interface elements in order to accomplish desired tasks. Often, the discovery of new features and services available through a computer only takes place through trial and error. As a result, the computers are not being utilized in the most efficient manner, because the users do not understand how to take advantage of the power that is available to them. In other words, the vast potential of the computer often goes unrealized, because users are unfamiliar with all of the capabilities at their disposal or unable to employ them effectively.
In order to increase the efficiency with which computers are used, it is desirable to revise the fundamental manner in which users interact with their computers. More particularly, rather than using the computer as a passive tool that is directly manipulated by the user, it is preferable to employ the computer as a cooperative partner that assists in accomplishing the tasks desired by the user. To this end, it is desirable to provide a mechanism by which computers can be set up to accomplish tasks automatically, without requiring the user to instruct or otherwise manipulate the computer each time the task is to be performed.
Some computer programs provide certain capabilities in this regard. For example, some electronic mail programs contain a scheduling feature by which a server computer is automatically accessed at predetermined times of the day to determine whether the user has any incoming mail. If so, that mail is downloaded to the user's computer, and the connection with the server computer is then terminated. Other application programs also offer an automatic scheduling feature.
As another example, most operating systems provide the capability to have certain actions carried out upon startup. For example, the user can designate that certain programs be launched and running when the computer is first started. In a similar manner, some applications programs can be configured to automatically open a particular file when they are launched.
While these various features provide the user with the ability to automate certain tasks, they are each limited in their applicability. More particularly, the scheduling feature of the electronic mail program is hard coded into the software for that program, and therefore only available within the context of that particular program. Furthermore, the program must be running in order for the scheduled tasks to be carried out. This requirement may be undesirable since the program will use some of the computer's memory while it is running, thereby reducing the amount available for other programs. It also places a practical limit on the number of different tasks that can be set up, since each different program that has a scheduled task must be running in memory in order for its task to be implemented.
Similarly, the ability to launch applications upon startup is limited to that one particular instance. It does not provide the user with the capability to have tasks automatically carried out at other times or in response to other events.
It is desirable, therefore, to provide a mechanism for configuring a computer to automatically carry out any task that may be desired by a user in response to a variety of different events or at any desirable time, without requiring the user to have any familiarity with the programming of computers. To have applicability to any of the variety of tasks that might be desired by a user, such a mechanism should preferably function at the level of the computer's operating system, rather than be tied to specific applications programs or the like.